/******************************
 * 剪切板的设置和获取
******************************/

/** 
 * 设置系统剪贴板的内容。
 * 该复制采用创建input进行复制的方式，对于小程序等不支持DOM的js框架不进行支持。
 * @param text {String} 需要复制的内容
 * @returns {Promise} 
 */
function setClipboard(text: string): Promise<void> {
	var textarea = document.createElement("textarea"); //创建input对象
	document.body.appendChild(textarea); //添加元素
	textarea.value = text;
	textarea.focus();
	if (textarea.setSelectionRange) {
		textarea.setSelectionRange(0, textarea.value.length); //获取光标起始位置到结束位置
	} else {
		textarea.select();
	}
	let write = navigator.clipboard.writeText(text)
	document.body.removeChild(textarea); //删除元素
	return write;
}

/**
 * @returns {Promise} 
 * @example getClipboard().then((text) => { console.log(text) })
 */
async function getClipboard(): Promise<string> {
	var textarea = document.createElement("textarea"); //创建input对象
	textarea.style.visibility = 'hidden';
	textarea.style.position = 'absolute';
	textarea.style.top = '0';
	textarea.style.left = '0';
	document.body.appendChild(textarea); //添加元素
	textarea.focus();
	try {
		let text = await navigator.clipboard.readText();
		document.body.removeChild(textarea); //删除元素
		return text;
	} catch (err) {
		document.body.removeChild(textarea); //删除元素
		return Promise.reject(err);
	}
}
let api = { setClipboard, getClipboard }
window['_'] = Object.assign(window['_'] || {}, api)
export default api